package com.pai4j.message.aggregation;

import com.pai4j.message.model.MessageContext;

import java.util.List;

/**
 * 聚合策略接口
 * 定义如何聚合消息
 *
 * @author PAI4J Team
 * @date 2025-11-01
 */
public interface AggregationStrategy {

    /**
     * 聚合消息
     *
     * @param contexts 待聚合的消息上下文列表
     * @return 聚合后的消息
     */
    AggregatedMessage aggregate(List<MessageContext> contexts);

    /**
     * 判断是否应该触发聚合
     *
     * @param count 消息数量
     * @param rule  聚合规则
     * @return 是否触发
     */
    boolean shouldTrigger(int count, AggregationRule rule);

    /**
     * 获取策略名称
     *
     * @return 策略名称
     */
    String getStrategyName();
}

